import { Uri } from "vscode";
import { Channel, Commands } from "../constants";

interface ICommandNameWithoutArgumentTypeMapping {
    [Commands.ClearStorage]: [];
    [Commands.ViewOutput]: [];
    [Commands.Enable_SourceMap_Support]: [];
    [Commands.Run_Linter]: [];
    [Commands.Enable_Linter]: [];
    [Commands.Set_Linter]: [];
    [Commands.Start_REPL]: [];
    [Commands.Create_Terminal]: [];
    ['workbench.action.terminal.focus']: [];
}

export interface ICommandNameArgumentTypeMapping extends ICommandNameWithoutArgumentTypeMapping {
    ['setContext']: [string, boolean] | ['eq.vscode.channel', Channel];
    [Commands.Sort_Imports]: [undefined, Uri];
}

export type CommandsWithoutArgs = keyof ICommandNameWithoutArgumentTypeMapping;